package ninth.线程操作的相关方法;

/**
 * 在Java中 也可以使用yield()方法将一个线程的操作暂时让给其他线程执行
 */
class MyThread5 implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i <5 ; i++) {
            System.out.println(Thread.currentThread().getName()+"运行 --> "+i);   //输出线程名称
            if(i==3){
                System.out.print("线程礼让: ");
                Thread.currentThread().yield(); //线程礼让
            }
        }
    }
}
public class 线程的礼让 {
    public static void main(String[] args) {
        MyThread5 mt = new MyThread5();//实例化MyThread5对象
        Thread t1 = new Thread(mt, "线程A");
        Thread t2 = new Thread(mt, "线程B");
        t1.start(); //启动多线程
        t2.start(); //启动多线程
    }
}
/**
 * 从结果可以看出 当线程条件满足(i == 3) 就会江本线程暂停，而让其他线程先执行
 */

/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=56689:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 ninth.线程操作的相关方法.线程的礼让
线程B运行 --> 0
线程B运行 --> 1
线程B运行 --> 2
线程B运行 --> 3
线程A运行 --> 0
线程礼让: 线程A运行 --> 1
线程A运行 --> 2
线程B运行 --> 4
线程A运行 --> 3
线程礼让: 线程A运行 --> 4

Process finished with exit code 0
 */